home *** CD-ROM | disk | FTP | other *** search
- Zoo archiver version 1.40
- by
- Rahul Dhesi
-
- Zoo version 1.40 for MS-DOS, being distributed in executable form, is public
- domain software.
-
- NEW FEATURES IN ZOO 1.40
-
- 1. SUBDIRECTORY SUPPORT
-
- Zoo 1.40 normally stores the complete pathname of each archived file. If the
- ":" modifier is given the pathname is not stored.
-
- At extraction time, Zoo 1.40 normally extracts each file into the current
- directory. If the "/" modifier is given, Zoo will attempt to extract each
- file into the directory required by the complete stored pathname of the
- file, but the directory path preceding the filename must already exist. If
- the modifier is doubled as "//", the directory path need not already exist
- and is created if necessary.
-
- Another modifier "." tells Zoo 1.40 to restore files relative to the current
- directory whenever the pathname begins with "/". For example, if a stored
- file has the pathname "/doc/misc/zoo.doc", then the "." modifier will tell
- Zoo to restore the file to the pathname "./doc/misc/zoo.doc" instead. The
- "." modifier has no effect on pathnames that do not begin with "/".
-
- Examples:
-
- The command "zoo a myzoo /bin/*.*" archives all files in /bin and
- stores their full pathnames in the archive. The command
- "zoo a: myzoo /bin/*.*" archives the same files but does not store
- their full pathnames.
-
- The command "zoo x myzoo" extracts all archived files into the current
- directory.
-
- The command "zoo x/ myzoo" extracts archived files to the full pathname
- of each file. However, if any needed directory does not exist, an
- error message is given and the file is not extracted.
-
- The command "zoo x// myzoo" does the same, except that if a needed
- directory does not exist, it is created.
-
- The command "zoo x/. myzoo" extracts each file relative to the current
- directory. Thus, the archived file "/bin/zoo.exe" is actually
- extracted as "./bin/zoo.exe" and the ./bin subdirectory must already
- exist.
-
- The command "zoo x//. myzoo" does the same, except that if ./bin does
- not exist, it is created.
-
- 2. WILDCARD SUPPORT
-
- Zoo 1.40 continues to accept the enhanced wildcards of earlier versions but
- these are now further improved to handle pathnames. Normally, a wildcard
- match is attempted only against the filename part of the entire pathname.
- But if a wildcard contains a slash ("/") anywhere in it, the match is
- attempted against the full pathname. (Note: When files are being added to
- an archive, any directory prefix must be supplied exactly. Wildcards in the
- directory prefix are accepted only when selecting a file already in an
- archive.)
-
- If the match is against the full pathname, the slash separating the directo-
- ry prefix and the filename must be given explicitly. Thus the pathname
- "/doc/zoo.txt" will not be selected by the pattern "/*.txt" but it will be
- selected by the patterns "*/*.txt" and "/*/*.txt".
-
- By default, a dot in the filename must be explicitly matched. If an archive
- contains filenames with non-MS-DOS syntax (which may allow multiple dots in
- filenames), only the last dot in the filename is required to be explicitly
- specified. However, if a wildcard contains two consecutive asterisks
- ("**"), the dot is no longer special.
-
- Backslashes are also accepted instead of slashes.
-
- The purpose behind some of these seemingly arbitrary restrictions is to
- avoid surprising MS-DOS users, yet allow for reasonably flexible pattern
- matching either just on a filename or on an entire pathname.
-
- Examples of matches against the pathname "/batch/test.bat":
-
- The pattern "*.bat" matches because only the filename part of the path
- is tested. The pattern "*/*.bat" matches because both the directory
- prefix and the filename separately match.
-
- The pattern "*/*" does not match because the dot must be explicitly
- matched. The patterns "**/*" and "*/**" both match because the
- presence of "**" means the dot is no longer special.
-
- The pattern "*" does not match because the dot is special. The pattern
- "**" matches because the double "**" causes the dot to not be special.
- For the same reason, "*t.*" and "**t*" match but "*t*" does not.
-
- 3. COMPATIBILITY WITH PREVIOUS VERSIONS
-
- Previous versions of Zoo will extract files from any archive created by
- version 1.40, but will refuse to modify such archives except for deleting or
- undeleting files. Instead, they will print a message warning the user that
- Zoo version 1.40 is needed to fully manipulate the archive.
-
- 4. LONG FILENAME SUPPORT
-
- Although MS-DOS supports only short filenames, the portable version Zoo
- version 1.40 can create archives containing filenames (and directory names)
- of up to 255 characters each. Zoo 1.40 for MS-DOS will list the full
- filename or directory name in such archives, but will use an appropriate
- short filename for extraction.
-
- The "f" modifier to the archive list commands still yields a columnized
- listing containing only short filenames.
-
- 5. ERROR CHECKING IN DIRECTORY ENTRIES
-
- Previous versions of Zoo maintain a CRC (cyclic redundancy code) for the
- file data, but not one for the internal directory format itself. Zoo 1.40
- now additionally maintains a CRC for all the fields of the internal
- directory structure of the archive. This CRC is checked every time an
- archive listing is obtained. If a CRC error is detected, a warning message
- points out the file for which the directory information is incorrect.
-
- A spurious indication of error will occur when Zoo 1.40 is used to list an
- archive in which files were deleted or undeleted with an earlier version of
- Zoo.
-
- Packing an archive rewrites all directory entries and eliminates any CRC
- errors in them.
-
- An error detected in a directory entry does not imply anything about the
- correctness of the file itself. If the file can be extracted normally
- without a CRC error, it is probably not corrupted.
-
- 6. FILENAME SYNTAX CORRECTION
-
- If Zoo 1.40 detects corruption of a filename in an archive, it fixes the
- filename to correspond to legal MS-DOS format before it extracts the file.
- Thus if a Zoo archive was created on another system and if the archive
- creation program did not rigorously follow the Zoo archive specification,
- the file can still be extracted on an MS-DOS system.
-
- 7. MULTIPLE ARCHIVE LISTINGS
-
- The new command L accepts a list of archive names, each of which may contain
- wildcards. This is specially useful in conjunction with the "a" modifier,
- which makes it possible to get a combined listing of archives in multiple
- directories, e.g.:
-
- "zoo La /new/*.zoo /*.zoo a:*.zoo /doc/*.zoo /upload/*.zoo /download/*.zoo".
-
- 6. OTHER POINTS TO NOTE
-
- 1. Packing an archive does not cause filenames to be listed.
-
- 2. To permit use in networking and multitasking environments, Zoo 1.40
- creates a unique temporary filename to hold a partially packed archive
- until packing is complete.
-
- 3. Before addition to an archive, names of selected files are sorted into
- alphabetic order on the entire pathname. A future version will let the
- user select whether to sort by pathname or by filename.
-
- 4. If a file called "+" exists in an archive, Zoo 1.40 will not be able to
- selectively extract or list it, since the filename "+" is currently
- reserved for future use in a special way. Such a file can still be
- selected with the wildcards "?" and "*".
-
- 5. When Zoo adds a file to an archive, it marks as deleted any previously-
- archived file with the same name. This is done even if the two files
- have different directory prefixes. If you deliberately wish to archive
- files from different directories that have the same names, proceed as
- usual, then simply use the U command to undelete all files.
-
- 6. Wildcard matching is not entirely consistent between different
- commands. Please confirm that a supplied pattern does indeed match the
- desired files.
-
- USAGE HINTS
-
- Zoo 1.40 allows you to archive a directory hierarchy and later restore it to
- another disk or another computer system. For example, if you would like
- help a friend set organize his or her hard disk, you need only create a
- similar disk hierarchy on any other system and archive the files. When the
- archive is extracted with the "x//" command, the original directory
- hierarchy will be recreated with all files in their place.
-
- Currently Zoo 1.40 does not recursively archive files in subdirectories of a
- directory. This capability is planned for a future version. However, a
- command line need only specify the name of each directory to be archived,
- with a trailing slash. For example, the command "zoo a hier / /bin/ /doc/
- /tmp/ /tmp/scr/ /tmp/scr/junk/" will archive all files in each of the
- specified directories.
-
- FUTURE DIRECTIONS
-
- The document "zoofmt.doc", already distributed with the source package for
- version 1.31, describes the current and proposed Zoo archive format in
- detail. Zoo 1.40 implements a subset of that format. Features targeted for
- future implementation include: automatic newline conversion of text files
- at extraction time; Macintosh data and resource forks (earlier versions of
- Zoo will transparently extract the data fork); preservation of timezone and
- file attributes; multiple file versions; and files split across archives.
-
-
- -- Rahul Dhesi 1987/01/24
-